home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / t_os / mopterm / mopterm.syn < prev   
Text File  |  1991-10-18  |  42KB  |  1,110 lines

  1.  MOPTERMオートパイロット制御文(第十一版)
  2.                  (MOPTERM Ver0.99n用)
  3.  
  4.                          1991年 7月
  5.  
  6.  MOPTERMオートパイロット制御文はテキストファイル上に制御文列を置くことで,
  7. それに従って,センタへのアクセス,掲示版のダウンなどを自動的に行うもので
  8. す。テキストファイルの作り方は「Townsシステムソフトウエア使いこなしガイド」
  9. のP.244「テキスト編集の使い方」等を参考にして下さい。
  10.  なお,MOPTERMオートパイロット制御文を入れたテキストファイルの名前は,最
  11. 後の4文字が「.PLT」になるようにして下さい。
  12.  
  13.  1.オートパイロット制御文ファイルの実行方法
  14.  
  15.  オートパイロット制御文を入れたテキストファイルの使い方は3つあります。
  16. 一つは,MOPTERMをアイコン登録して起動する場合に,登録時のパラメータに記述
  17. する方法です。もう,一つは,MOPTERM起動後にメニューから起動する方法です。
  18. そして,最後は,送信入力行で指定するものです。
  19.  
  20.  1.1 起動時のパラメターでの指定
  21.  
  22.  パラメータとして登録する場合は,MOPTERM.EXPをアイテム登録する際のパラメ
  23. タに以下の形式で指定して下さい。
  24.            __________________ 
  25.     パラメータ |-x  ファイル名              |
  26.                       ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  27.  (ファイル名は,MS-DOSで言う所のパス名でも可能です。)
  28.  
  29.  起動時のパラメタで指定されたオートパイロット制御文ファイルは,MOPTERMの
  30. 起動と同時に,解釈/実行を開始します。ですから,MOPTERMの設定に関する制御
  31. 文(5.1,5.2章を参照)は,この方法で指定すると便利です。
  32.  オートパイロットの動作中は,AUTOと書かれたアイコンだけが,少し,濃い色
  33. で残っています。もし,動作を途中で止めたい場合は,これをクリックして下さ
  34. い。
  35.  この停止の方法は,他の方法で起動した場合も同様です。
  36.  
  37.  1.2 動作中のメニューからの起動
  38.  
  39.   MOPTERM動作中にメニューから使用する場合は,AUTOと書かれた,おかしなロボ
  40. ット型のアイコンのクリックし,目的のファイルを選択して下さい。
  41.  その際,ファイルの一覧として表示されるのは,「xxxxxx.PLT」というように
  42. ファイル名の最後の4文字(識別子)が「.PLT」のもののみです。
  43.  
  44.  1.3 通信入力行での指定
  45.  
  46.  一行単位の送信モードの場合,通信入力行に,「$」で始まる文字列を記述して
  47. リターンを押すと,「$」の後の部分をオートパイロットの制御文として処理しま
  48. す。この場合,ファイルにオートパイロットの制御文が格納されているのではな
  49. く,直接,入力されている事になります。
  50.  もちろん,外部のファイルを実行する制御文を実行する事で,ファイルに格納
  51. された物を実行することもできます。
  52.  「$」の文字は,カストマイズ可能です。
  53.  
  54.  例 シフトロックモードにする。
  55.  __________________ 
  56. |$shiftl({Yes})              |
  57.    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  58.  
  59.  次の章からは,制御文ファイルの中身の作成方法について記述します。
  60.  
  61.  2.使用文字種
  62.  
  63.  制御文ファイル上には,テキスト編集などで作成した文字列がおかれます。こ
  64. れらの文字列は実行される場合に制御を直接指示する意味のある記号の並びとそ
  65. れらの句切りとしてしか意味のない句切り記号により構成されます。意味のある
  66. 記号の間に複数個の句切り記号を挟むことができます。(意味のある記号がくっ
  67. ついてしまわない限り,挟まなくてもかまいません。)
  68.  
  69.  1)区切り記号
  70.  
  71.  句切り記号は以下のものです。
  72.  
  73.   空白,改行,TAB,コメント
  74.  
  75.  コメントは以下の形式です。
  76.  
  77.   /*任意の文字列*/
  78.  
  79.  任意の文字列の部分に,「*/」を含めることはできません。また,「* 」及び,
  80. 「/ 」は半角の文字(1バイトのJIS文字)である必要があります。
  81.  
  82.  2)意味のある記号
  83.  
  84.  意味のある記号は以下のものです。
  85.  
  86.  ;  ,  %  (  )  [   ]  { } |  #  @  &&  ||  <  >  <=  >=  ==  !=
  87.   =  <>  +  -  *  /  !  := 名前  (すべて,半角の文字です。)
  88.  
  89.  名前は英字で始まり,英字又は数字が続いたものです。初めの8文字のみ,同
  90. 一性の判定のために使用されます。英字とは,英大文字と小文字であり,大文字
  91. と小文字は同一性の判定では異なるものとなります。
  92.  意味のある記号は次に示す文法に従った順序で並べる必要があります。
  93.  
  94.  
  95.  3.文法
  96.  
  97.   制御ファイルの意味のある部分は以下のような,文の並びによって構成され
  98. ます。
  99.  
  100.   <文の並び>::= <文> |
  101.           <文の並び> ;  <文>
  102.  
  103.  これは,一つの文,又は,複数個の文を「;」で区切って並べたものという意味
  104. です。::=の右側にある< >が構文上の項目を示し,::=の左側がその内
  105. 容を示します。|はその両辺のどちらでもよいという意味です。
  106.  従って,上の記述は,<文の並び>というものは,一つの,<文>か,又は,
  107. その後ろに,「;」で区切って次の文を並べたものという意味です。後ろ側の<
  108. 文の並び>に,前側の<文の並び>が何回も適用されることによって,いくら長
  109. い<文の並び>もこの定義で良いことになります。
  110.  
  111.  文には<宣言文>,<実行文>,<変数宣言文>,<代入文>と<空文>があ
  112. ります。
  113.  
  114.  <文>::= <宣言文> | <実行文> | <変数宣言文> |
  115.         <代入文> | <空文>
  116.  
  117.  空文とはなにもないというもので,意味もありません。
  118.  
  119.  <空文>::=
  120.  
  121.  
  122.  1) 宣言文
  123.  
  124.  <宣言文>::= %   <名前>   <項>
  125.  
  126.   <項>  ::=  <因子>  |  <因子> <演算子>  <項> |
  127.            <単項演算子> <項>
  128.  
  129.   <因子>  ::=  { <内容> } |  <名前> | #ファイル名  |
  130.             @ <実行文> | ( <項> ) | <数字列>
  131.  
  132.  「%」の後の<名前>が,<項>で示される文字列を表す事を宣言します。ここ
  133. で宣言された<名前>が<実行文>の中で評価されると,この宣言文の<項>で
  134. 示された文字列に置き代わります。
  135.  
  136.  <項>が,一つの<因子>から成る場合は,その<因子>が表す文字列を表し
  137. ます。
  138.  <項>が,複数の<因子>を<演算子>で区切りながら並べた物である場合,
  139. それらの<因子>が表す文字列に<演算子>が示す処理をほどこした結果の物を
  140. 表します。<単項演算子>の場合は,後ろに続く<項>に対して<単項演算子>
  141. が示す処理を行います。
  142.  <演算子>,<単項演算子>については,4)演算子を参照して下さい。
  143.  
  144.  <因子>が「{ <内容> }」の形式の場合,<因子>は,<内容>に記述され
  145. た文字列,そのものを表します。
  146.  <内容>に<内容>の中で対にならない「}」を含めることはできません。対に
  147. なる「{」「}」とは,以下のいずれかに該当するものです。
  148.  
  149.  - 「{」と,その後,他の「{」を挟まずに最初にあらわれる「}」は,対にな
  150. ります。
  151.  
  152.  - 「{」と,その後,その後にあれわれる他の「{」と対にすることができな
  153. い,最初の「}」とは対になります。
  154.  
  155.  <項>が<名前>の場合は,その<名前>は既に評価された<宣言文>の中で
  156. 宣言されたものである必要があります。そして,<項>に示された<名前>は評
  157. 価されることによって,宣言された時点の内容におきかわります。そして,新し
  158. い<名前>がその内容を示すものとして宣言されます。
  159.  「#ファイル名」は,フロッピーディスクや,ハードディスク上のファイルの参
  160. 照で,「#」の後に,24文字以下の英数字(「_」「:」「\」を含む)列を付け
  161. た物で,いわゆるパス名/ファイル名です。この場合,<因子>は,そのファイ
  162. ルの中身である文字列を表します。
  163.  
  164.  「@ <実行文>」の形式の場合,この実行文が,評価され実行されます。この
  165. 実行文が結果の文字列を持つ物である場合,その結果の文字列を表すことになり
  166. ます。
  167.  <数字列>とは,半角0~9までの数字の列を言います。<因子>が<数字列
  168. >の場合,<因子>の値は,その数字の列をそのまま,文字列としたものです。
  169.  <内容>が数字の列の場合に「{ <内容> }」の,「{」と「 }」を省略でき
  170. る,と見ることもできます。
  171.  
  172.  実行文は結果の値を持つ場合がありますが,宣言文では,結果の値はありませ
  173. ん。
  174.  
  175.  注意:
  176.  定義の時点では,<内容>は文字列としての意味しかありません。
  177.  <名前>は,英字で始まり,英字,又は,数字が任意個つながったものです。
  178. ただし,<名前>の識別には頭の8バイトのみが使用されます。また,標準で提
  179. 供される<文>を表す<名前>と同一の<名前>を宣言した場合,宣言された<
  180. 名前>のが優先となるため,その<名前>の<文>が使えなくなります。
  181.  
  182.  例 ダイヤル回線で0301201234に電話をかける。
  183.  
  184.   %Tokyo  {ATDP 0301201234}; 
  185.   dial (Tokyo)
  186.  
  187.     これは, 以下のものと同じ意味です。
  188.  
  189.   dial ({ATDP 0301201234}) 
  190.  
  191.  また,以下のような使い方も可能です。
  192.  
  193.   %CallTokyo  { %Tokyo {ATDP 0301201234}; 
  194.                  Dial(Tokyo)
  195.                 }; 
  196.   CallTokyo 
  197.  
  198.   だいぶ,回りくどいですが,結果は同じです。
  199.  
  200.  
  201.  2) 実行文
  202.  
  203.  <実行文>::=<因子>  |
  204.         <項> ( <パラメタ列 ) 
  205.  
  206.  <パラメタ列>::= <項> |
  207.            |
  208.            <パラメタ列> ,   <項>
  209.  
  210.  <実行文>の先頭にある<因子>,及び,<パラメタ列>で<項>として使用
  211. される<名前>は,明に,あるいは,標準的に宣言された<名前>(文名)を示
  212. します。<実行文>の頭に<因子>として使用される<名前>(文名)は<文>
  213. の並びの順に評価され,対応する処理が実行されます。<パラメタ列>は,<実
  214. 行文>の実行にしたがって,評価されます。評価とは,<名前>をそれに対応す
  215. る<内容>である文字列に置き換える作業のみですから,それが表す,処理を行
  216. う(実行する)ことはありません。(ただし,wait文, case文, select文, loop
  217. 文, dialone文で,条件によって,<パラメタ列>内の<項>の内容を評価した結
  218. 果が実行されます。いわゆる,条件文,繰り返し文ということになるでしょう。)
  219.  <パラメタ列>は,<項>を「,」で区切って並べたものです。<実行文>によ
  220. っては,<パラメタ列>の<項>は省略可能です。
  221.  <実行文>の実行とは,その<実行文>が実行可能な標準の<名前>(dial等)
  222. を頭に<因子>として持つ場合は,その文の処理(4章に記述しています.)を
  223. 行うことです。その場合,結果の値は,対応する文の処理によって,返る場合が
  224. あります。
  225.  標準の名前以外の場合は,その<因子>の表す文字列を,<文の並び>として
  226. 実行することを意味します。<因子>な<名前>の場合は,<文の並び>を値と
  227. して持つように,予め,宣言されている必要があります。
  228.  <文の並び>として実行する場合,<文の並び>の中の最後に有効な値を返し
  229. た<文>の結果の値が,<文の並び>の結果の値となります。
  230.  
  231.  例 標準名による文
  232.  
  233.  type( {.00+});
  234.  
  235.  例  宣言した名前による文
  236.  
  237.   %ProcT  {[Id] type(Id)}; 
  238.   ProcT({PFFnnnnn\n})          /* これが, 実行文になります */ 
  239.  
  240.   例  文字列
  241.  
  242.   {
  243.     %ProcT  {[Id] type(Id) }; 
  244.     ProcT({PFFnnnnn})          /* これが, 実行文になります */ 
  245.    }
  246.   以上がひとつの文になります。この場合,ProcTはこの内部でのみ有効な<名前
  247. >となります。
  248.  
  249.  3) 変数宣言文
  250.  
  251.  変数を宣言するための文です。
  252.  
  253.  <変数宣言文> ::= var  <名前> [ <項> ]
  254.  
  255.   名前は,変数名となります。<項>は,変数の文字数の最大になります。この
  256. 変数を数値として使う場合は,十進数での桁数であり,マイナスになる場合は,
  257. 符号の一桁も加える必要があります。
  258.  
  259.  4) 代入文
  260.  
  261.  <代入文> ::= <名前> :=  <項>
  262.  
  263.  <名前>は<変数宣言文>で宣言した,変数名である必要があります。<項>
  264. の内容が<名前>が表す変数に代入されます。変数名の最大長より,長い文字列
  265. を代入しようとすると,異常となり,オートパイロットの処理を停止します。
  266.  
  267.   例
  268.   var a[10];
  269.   a:={12345};  /* aは 「12345」という文字列になります */
  270.   a:={12345678901}   /* aは10文字までですのでエラーになります */
  271.  
  272.  5) パラメタ
  273.  
  274.  標準名以外を<実行文>とする場合の,<パラメタ列>は<実行文>の頭の<
  275. 項>で示す<内容>が以下のような場合にのみ,可能です。
  276.  
  277.  <内容>::=  [ <仮パラメタ列> ] <仮パラメタを含む内容>
  278.  
  279.  <仮パラメタ列> ::= <名前> |
  280.              <仮パラメタ列> , <名前>
  281.  
  282.  <仮パラメタ>を含む<内容>は,構文的には普通の文の並びです。ただし,
  283. この中で<仮パラメタ列>内の<名前>で参照される<名前>は,対応する<パ
  284. ラメタ列>内の<項>の内容を意味します。
  285.  
  286.  例
  287.   %Callnif  {  [TelNo,Id]
  288.      dial(TelNo); 
  289.      type({.00+});
  290.      wait({10},stopt, {->},); 
  291.      type( Id ) ; 
  292.      type({\n}) 
  293.     }; 
  294.    Callnif( {ATDP 0301201234}, {PFF00XXX}) 
  295.  
  296.  例 関数的な使いかた
  297.     %headtail { [input]
  298.         %h @getchar(input,1,1);              /* inputの最初の文字 */
  299.         %t @getchar(input,@nochar(input),1); /* inputの最後の文字 */
  300.         im(h|t);
  301.      };
  302.     パラメタの最初と最後の文字を繋げて返す関数の定義になります。
  303.  
  304.  6)演算子
  305.  
  306.  演算子には,以下のような物があります。
  307.  <演算子>::= && | ||  | <  | >  | <= | >= |
  308.                    == | != | = | <>  | |  | +  | - |
  309.                     *  | /  |
  310.  <単項演算子>::= !  | +  | -
  311.  
  312.  演算子が,一つの<項>の並びの中に複数個存在する場合には,以下の優先順
  313. 位に従って評価されます。同じ演算子,及び,優先度が同じ演算子は左から順に
  314. 評価されます。
  315.  
  316.  最優先 ↑  !
  317.           |  *  /
  318.      |    +  -
  319.      |    |
  320.      |    =  <>  <  >  <=  >=  ==  !=
  321.      |    &&
  322.       ↓    ||
  323.  
  324.  以下に各演算子の意味を記述します。
  325.  
  326.  - 文字列に対する演算
  327.  「|」 : 
  328.  左辺と右辺の文字列を結合した物を返します。
  329.  「=」 : 
  330.  左辺と右辺の文字列が,長さ,及び,その中身において,等しい場合に「Yes」,
  331. 等しくない場合に「No」を返します。
  332.  「<>」 : 
  333.  左辺と右辺の文字列が,長さ,又は,その中身において,等しくない場合に
  334. 「Yes」,等しい場合に「No」を返します。
  335.  
  336.  %a {aaa} | {bbb}  
  337.   aは「aaabbb」になります。
  338.  
  339.  %left {12rt};
  340.  %comp left = {12rt}; 
  341.   compは「Yes」になります。
  342.  
  343.  %comp2 left = {1234}; 
  344.   comp2は「No」になります。
  345.  
  346.  - 数値に対する演算
  347.  「+」「-」「*」「/」 :
  348.  それぞれ,加算,減算,乗算,除算を行います。左辺,及び,右辺は,数字だ
  349. けの文字列,又は,数字列の前に半角の符号「+」「-」を付けた物とします。それ以
  350. 外の文字列が,左辺,又は,右辺に来た場合,0として計算します。0で割った
  351. 場合の結果は保証しません。
  352.  「<」「>」「<=」「>=」「==」「!=」 :
  353.  それぞれ,数値としての比較を行い,「Yes」,「No」を返します。
  354.  
  355.  %a {1}+{5};           aは「6」
  356.   %a  1 +{5};           aは「6」  
  357.  (数字は括弧を付けなくても数字列のみの,<因子>です)
  358.   %a  (1+7)*2;          aは「16」
  359.   %a  {Nyaaao} + 1;     aは「1」
  360.  %a  ({1} | {5})*2;    aは「30」
  361.   (1と5を文字列として繋げると,15になります。)
  362.   var left[5];
  363.   left:=30;
  364.   %comp left==10*3;      compは「Yes」です
  365.  
  366.  
  367.  - 論理演算
  368.  「!」 :
  369.  <単項演算子>であり,右辺が「Yes」の場合は,「No」を返します。それ以外
  370. の場合は,「No」を返します。
  371.  「&&」「||」:
  372.  各々,論理積と,論理和を取ります。つまり,「&&」の場合は,両辺が「Yes」
  373. の場合に,「Yes」を返します。「||」の場合は,どちらかの辺が「Yes」の場合
  374. に,「Yes」を返します。それ以外は「No」を返します。
  375.  
  376.  
  377.  4.名前の有効範囲
  378.  
  379.  <宣言文>で<名前>に<内容>となる文字列を対応させた場合,その有効範
  380. 囲はその時点での実行レベルが終わるまでです。つまり,その<宣言文>を含む,
  381. 最小の対になる「{」「}」の間,又は,その<宣言文>を含む,最小の<名前>
  382. による定義の<内容>部分のいずれか小さい方です。
  383.  その実行レベルから,呼び出される実行レベルでは,上のレベルでの宣言が有
  384. 効です。
  385.  有効範囲を超えると,宣言前に同一名で有効であった上位のレベルの<宣言文
  386. >があれば,それが再び有効になります。
  387.  同一レベルで,同一名の宣言を行うと,前の宣言は意味を失います。
  388.  最上位のレベルより,上の仮想的なレベルで定義されている,<宣言文>が標
  389. 準名です。標準名には次章に示すものがあります。現在ある標準名は実行された
  390. 場合にしか意味を持ちません。従って,文字列が必要な<パラメタ列>内の<項
  391. >にこれらの<名前>を指定することはできません。
  392.  
  393.  
  394.  
  395.  5.標準名による実行文
  396.  
  397.  以下のような種類の標準名による実行文があります。
  398.   - ホスト/通信回線の設定
  399.   - MOPTERMの動作モードの設定
  400.   - 電話回線の接続/切断
  401.   - 回線へのデータの送信/受信
  402.   - オートパイロットの実行制御
  403.   - 文字列操作
  404.   - 状態参照
  405.   - ファイル操作
  406.   - メモ操作
  407.  
  408.  
  409.  5.1 ホスト/通信回線の設定
  410.  
  411.  モデムの種類/ホストに応じて設定して下さい。Nifty等の標準的なセン
  412. ターの場合は,タウンズメニューでの回線の設定のみで,あまり気にしなくても
  413. 良いと思いますが。
  414.  
  415.  1)baud(ボーレート)
  416.  
  417.  回線のボーレートを指定します。指定できる値は以下のものです。
  418.  {300},{600},{1200},{2400},{4800},{9600},{19200}
  419.   ただし,{19200}は動作しない機能があります。省略値は,タウンズメニューで
  420. 指定した値です。
  421.  
  422.  2)xon({Yes}/{No})
  423.  
  424.  通信回線がX-フロー制御をするか,否かを指定します。X-フローありを指
  425. 定した場合でも,X-MODEM動作中は,X-フローは行いません。
  426.  省略値は,タウンズメニューで指定した値です。
  427.  
  428.  3)stopbit({1}/{2})
  429.  
  430.  ストップビットを1又は2に設定します。
  431.  省略値はタウンズメニューで指定した値です。
  432.  
  433.  4)parity({None}/{Odd}/{Even})
  434.  
  435.  パリティを,なし,奇数,偶数にそれぞれ,設定します。
  436.  省略値はタウンズメニューで指定した値です。
  437.  
  438.  5)lineend({CR}/{LF}/{CRLF})
  439.  
  440.  通常の送信で,行の終わりを以下のようにします。
  441.   CR= 0D  LF=0A  CRLF=0D0A (16進数)
  442.  省略値はCRです。
  443.  
  444.  6)lineendt({CR}/{LF}/{CRLF})
  445.  
  446.  文書の送信で,行の終わりを以下のようにします。
  447.   CR= 0D  LF=0A  CRLF=0D0A (16進数)
  448.  省略値はCRです。
  449.  
  450.  7)flyingx({Yes}/{No})
  451.  
  452.  Flyng-Xを使うか,否かを設定します。Flying-Xは,MNPもモデムを使用時に
  453. X-MODEMによる,バイナリー転送を高速化するための物です。アイデアは,NIFTYServe
  454. ,プログラマーズ・フォーラムSYSOP/フィンローダさんによるものです。
  455. MNP以外の接続形態では使用できません。(エラーが続発して,使えないでし
  456. ょう。)
  457.  省略値はNoです。
  458.  
  459.  8)dataleng({7bit}/{8bit})
  460.  
  461.  データ長を設定します。
  462.  省略値はタウンズメニューで指定した値です。
  463.  
  464.   9)rscs({Yes}/{No})
  465.  
  466.  RS-232CのRS/CS線によるフロー制御を行います。これを指定する
  467. 場合はモデム側でも,RS/CS線によるフロー制御を設定してください。MN
  468. Pのモデムで有効です。
  469.  省略値はNoです。
  470.  
  471.  10)flyline({1~4})
  472.  
  473.  文書ファイル,又は,メモをセンターに対して送信する際に,その文の改行が
  474. エコーバックされてくる前に何行の,文を送信するかを指定します。省略値は3
  475. であり,Niftyではこれでうまくいきますが,応答が遅いセンターでは少な
  476. い値に設定して下さい。(例えばPC-VANは {1} )。
  477.  
  478.  11)portno({0~4})
  479.   RS-232Cのポートの番号です。0以外は,拡張ボックスのポートになります。
  480. 省略値は 0(内蔵ポート)です。
  481.  
  482.  12)code(コード名)
  483.   以下のコード名で,ホストのコードを指定する。省略値はシフトJIS。
  484.   コード名:sjis シフトJIS
  485.            jis  シフト無JIS(83JIS)
  486.   例 新JISコードのホストに接続する。
  487.    code({jis})
  488.  
  489.  5.2 MOPTERMの動作モードの設定
  490.  
  491.  MOPTERMの動作モードを,処理や,好みに応じて,変更するための物です。
  492.  
  493.  1)click({Yes}/{No})
  494.  
  495.  キー入力時のクリック音を出すか,否かを指定します。
  496.  省略値は,Yesです。
  497.  
  498.  2)logprint({Yes}/{No})
  499.  
  500.  受信文字の印刷を行うか,否かを設定します。
  501.  省略値はNoです。
  502.  
  503.  3)nattou({Yes}/{No})
  504.  
  505.  通信画面でドット単位のスクロールを行うか否かを指定します。
  506.  省略値はNoです。
  507.  
  508.   4)sendtype({Line}/{Ch/1}/{Ch/2})
  509.  
  510.  ホストに対する送信を,行単位で行うか,文字単位で行うかを指定します。
  511.   Line :行単位で送信することを指定します。
  512.   Ch/1 :文字単位で送信します。2バイトのコードを持つ文字(漢字)
  513.        に対してバックスペースを行う場合,1つのバックスペースを送
  514.        信します。
  515.   Ch/2 :文字単位で送信します。2バイトのコードを持つ文字(漢字)
  516.        に対してバックスペースを自動的に2つ,送信します。
  517.  Niftyのようなホストに対して,文字単位で送信する場合はCh/2を指
  518. 定して下さい。
  519.  省略値は「Line」です。
  520.  
  521.  5)doschar({文字})
  522.  通信入力行の1カラム目に,この文字があると,続く文字列はMS-DOSの
  523. コマンドと見なして処理されます。
  524.  省略値は 「%」になっています。
  525.  
  526.   6)pilotch({文字})
  527.   通信入力行の1カラム目に,この文字があると,続く文字列はオートパイロッ
  528. トの制御文と見なして処理されます。
  529.  省略値は 「$」になっています。
  530.  
  531.   7)ctrl({Yes}/{No})
  532.  ctrl系の制御コードによるカーソルの移動を行うか,否かを指定します。
  533. 回線上のゴミで,カーソルが移動するのを防ぐためにはNoにしておく必要があ
  534. ります。
  535.  省略値はNoです。
  536.  
  537.  8)esc({Yes}/{No})
  538.  ESCシーケンス(FM系,ANSIの一部)の処理を行うか,否かを指定し
  539. ます。いたずらによる,画面の破壊を防ぐためには,Noにしておく必要があり
  540. ます。
  541.  省略値はNoです。
  542.  
  543.  9)setoak(文字列)
  544.  OAK2のモードをセットします。文字列は以下の文字で構成されなくてはな
  545. りません。そして,各々の文字の意味に従って,OAK2のモードをセットしま
  546. す。
  547.    J:漢字辞書モード
  548.       R:ローマ時モード
  549.       K:カタカナモード
  550.       H:ひらがなモード
  551.       Z:全角モード
  552.  例えば,漢字,全角,ローマ字入力,ひらがなにセットする場合は,
  553.   setoak({JZRH})
  554.   と,なります。省略値は,英字のみになっています。
  555.  
  556.  10)dispecho({Yes}/{No})
  557.  ファイル,及び,メモの送信時にセンターから,送り返された文字列を表示す
  558. る場合にyesにします。省略時はnoです。
  559.  noの場合は,タウンズから送信したデータを表示し,送信中のセンターから
  560. のデータは表示しません。MNPのモデムをお使いの場合は,yesに,それ以
  561. 外の場合はNoをお勧めします。
  562.  
  563.  11)compath(パス名)
  564.  MS-DOSコマンド発行時に,コマンドプロセッサーとして使用する,プログラム
  565. を指定します。省略時は,「C:\\COMMAND.COM」になっています。
  566.  タウンズOSから起動する場合は,省略値のままで良いと思いますが,MS-DOS
  567. から起動する場合は,COMMAND.COMを参照できるような形式で,指定して下さい。
  568. MS-DOSからの起動については,他にも多くの注意が必要ですので・・・・・かた
  569. ぎの方にはお勧めできかねます。
  570.  例えば,D:がMS-DOSの起動ドライブとすると「compath({D:\\COMMAND.COM})」
  571. のように指定します。
  572.  
  573.  12)crmode({Yes}/{No})
  574.  Noの場合,ホストからの改行コードとして,CR又は,LFの片方を受け取
  575. った時点で,カーソフトの復帰,改行を行います。Yesの場合は,CRで,復
  576. 帰,LFで,改行を行います。省略時は,Noの動作を行います。
  577.  
  578.  13)bellfile(ファイル名)
  579.  SND形式のPCMデータの入ったファイルを指定して,CTRL-Gのベル
  580. 音として登録します。MOPTERM起動時に,起動時のディレクトリ内に「BELL.SND」
  581. というファイル名で,SNDデータがある場合は,それが自動的に登録されてま
  582. す。
  583.  この文では,既に登録されているベル音のデータがある場合は,それを置き換
  584. えることになります。
  585.  例
  586.    bellfile({G:\BELL.SND})
  587.  
  588.  14)visibell({Yes}/{No})
  589.   Yesを指定すると,CTRL-Gによるベル音発生時,及び,オートパイロットの
  590. snd文実行時(音を出す時)に,画面が明滅します。省略値はNoです。
  591.  耳の不自由な方向けの機能です。
  592.  
  593.  15)backclr(r,g,b)
  594.  通信画面のバックの色を指定します。3つのパラメタは,それぞれ,赤,緑,
  595. 青の3原色の輝度をあらわし,0~255までの数値です。省略値は,全て0と
  596. した黒になっています。
  597.   例 バックの色を緑がかった,グレーにする。
  598.     backclr(64,128,64)
  599.  
  600.  16)setpf(n,text)
  601.   PFキーにオートパイロットの制御文を登録できます。nがキーの番号1~2
  602. 0であり,textが登録する文字列です。文字列は,最大80バイト(半角文
  603. 字)までです。これを越える大きさのオートパイロットは,別ファイルに作成し
  604. て,呼び出すようにして下さい。
  605.  また,PFキーは,テンキー無のキーボードでは,1~12までしかありませ
  606. んので注意して下さい。
  607.   例
  608.   setpf(2,{#G:\NEM\MAINPROC.PLT})
  609.  
  610.  17)tab(桁数)
  611.   水平タブを設定する,桁数の間隔を指定します。1以上,80以下の値で,省
  612. 略値は,8です。水平タブは,文字の入力フィールドで有効です。
  613.  
  614.  18)retmark({Yes}/{No})
  615.  改行マーク,及び,エンドマーク(EOFマーク)の表示,非表示の切替えを
  616. します。省略値は,表示です。
  617.  
  618.  19)shiftl({Yes}/{No})
  619.   シフトが,ロックされる状態にします。つまり,Yesの場合は,シフトキー
  620. を一回押す事で,シフト状態になり,シフト状態で,シフトキーを一回押す事で,
  621. シフト状態を解除します。省略値は Noです。
  622.  親指シフトには影響しません。親指シフトキーボードの場合は,ローマ字入力
  623. を行わないと,一本指での入力はできません。
  624.  
  625.  20)account(ファイル名,センター名[,分あたりの金額])
  626.  センターへのアクセス終了時に,課金情報を指定されたファイルに書き出しま
  627. す。ファイル名は30文字まで,センター名は20文字まで指定できます。
  628.  分あたりの金額は指定しなくてもかまいません。指定された場合,上のバー上に
  629. アクセス時間の表示と合わせて,料金の表示も行います。
  630.  課金情報は,1行にセンター名,アクセス開始日付・時刻,アクセス時間,料金
  631. を並べた物です。アクセス終了時にファイルの最後に追加していきます。
  632.  
  633.  21)hostmode({Yes/no}) Ver0.99t以降サポート
  634.   受信したデータを,送信側にエコーバックするか否か。MOPTERMをホストにする
  635. 場合に指定する。 省略値はNo。
  636.  
  637.  
  638.  5.3 電話回線の接続/切断
  639.  
  640.  電話回線の接続を行ったり,切断したりするものです。
  641.  
  642.  1)dial(パラメタ)
  643.  
  644.   パラメタ :接続方法,電話番号
  645.  
  646.  パラメタは,ダイヤル回線の場合,{ATDP 電話番号}の形式,プッシュ回線の
  647. 場合,{ATDT 電話番号}です。パラメタで指定された形式で電話をかけます。モ
  648. デムから,「BUSY」が返る場合には,再度,接続を行うモデムコマンドを発行しま
  649. す。「CONNECT」が帰った場合に,接続に成功したと見なします。うまくセンタに
  650. 接続できない場合(「NO CARRIER」等)は手続の実行を停止します。
  651.  うまく接続できると,接続中になります。
  652.  
  653.  例
  654.  
  655.  dial ({ATDP 01201234})
  656.  
  657.  2)discon
  658.  
  659.  電話を切ります。これにより,非接続中になります。接続中の状態でのみ実行
  660. 可能であり,非接続中の場合は意味がありません。パラメタはありません。パラ
  661. メタを指定すると誤りになります。
  662.  回線の切断は,DTR信号線を,Lowレベルにすることで行っています。A
  663. IWAのモデムで,工場出荷時に,DTR信号線を無視するモードになっている
  664. 物があります。有効とするように設定して下さい。
  665.  
  666.  3)dialone({ ATDP 電話番号} ,文1 ,文2)
  667.  指定した電話番号に一回だけ電話をかけ,うまくダイアルされた場合に文1を
  668. 実行し,そうでない場合に文2を実行します。うまくダイアルできたか否かは,
  669. モデムが「CONNECT」を返すことで確認します。ATDPの部分は,モデムのコマンド
  670. に変更して下さい。
  671.  
  672.  
  673.  5.4 回線へのデータの送信/受信
  674.  
  675.   回線上のデータを,ファイルに受信したり,ファイルの内容を送信したりする
  676. ものです。
  677.  
  678.  1)type(文字列)
  679.  
  680.  文字列を送信します。文字列の中で「\n」は改行を表します。
  681.  
  682.  2)send(文字列)
  683.  3)sendx(文字列)
  684.  
  685.  文字列:送信するファイルのパス名,
  686.  文字列をファイル名(パス名)として,ファイルの中身を送信します(ファイ
  687. ル送信処理)。すでに,ファイル送信,受信中の場合は失敗します。ファイルが
  688. ない場合,アクセスできない場合も失敗します。
  689.  失敗した場合は手続を停止します。
  690.  sendは無手順のテキストファイル,sendxはX-MODEMの転送を
  691. 行います。
  692.  
  693.  4)receive(文字列)
  694.  
  695.  文字列:受信するファイルのパス名,
  696.  文字列をパス名として,そのファイルに受信内容を格納し始めます。(ファイ
  697. ル受信処理)stoprecが実行されるまで格納を行います。すでに,ファイル送信,
  698. 受信中の場合は失敗します。ファイルへのアクセスができない場合も失敗します。
  699.  失敗した場合は手続を停止します。
  700.  
  701.  5)stoprec
  702.  
  703.  ファイル受信処理を終了します。
  704.  
  705.  6)receivex(文字列)
  706.  
  707.  文字列:受信するファイルのパス名,
  708.  
  709.  文字列をパス名として,そのファイルにX-MODEMで受信した内容を格納
  710. します。(ファイル受信処理) すでに,ファイル送信,受信中の場合は失敗し
  711. ます。ファイルへのアクセスができない場合も失敗します。
  712.  失敗した場合は手続を停止します。
  713.  
  714.  7)writelog(ファイル名)
  715.   バックスクロールのためにログバッファに入っているデータ(最近,受信した
  716. 255K文字分)を,指定したファイルに書き出します。
  717.  
  718.  8)received(ファイル名)
  719.  
  720.  基本的にreceiveと同じですが,ファイル名の後に「.月日」という修
  721. 飾を付けます。月は1月から9月までが1~9の数字,10月~12月がA~C
  722. の英字になります。
  723.  例えば,recived({FTOWNS});を11月14日に実行すると,
  724. 「FTOWNS.B14」というファイル名が作成されます。
  725.  なお,既存の同名ファイルがある場合は,そのファイルに追加します。
  726.  
  727.  9)break
  728.  ブレーク信号を送信します。
  729.  
  730.  5.5 オートパイロットの実行制御
  731.  
  732.  受信した文字列や,ユーザの指示に応じて,制御文の実行順序を変えたり,ユー
  733. ザに実行状態を表示したりするのに使います。
  734.  
  735.  1)wait( パ0,パ1,パ2,パ3,パ4,パ5,・・・・・・・)
  736.  
  737.  パ0:{時間} :最大待ち時間(秒)
  738.  パ1:{処理0}:最大待ち時間経過時の処理
  739.  パ2,4,・・ 文字列1,2, :受信を待つ文字列n
  740.  パ3,5,・・ 処理1,2,  :文字列nが入力された際の処理n
  741.  
  742.  指定したいずれかの文字列の受信を待ちます。最初の時間は,最大の待ち時間
  743. で単位は秒です。この時間内にいずれの文字列も受信しなかった場合は処理0を
  744. 行います。文字列nが入力された場合は処理nを行います。
  745.  文字列の中で「\n」は改行を示します。
  746.  実行された文が値を持つ場合は,その値が,wait文の値として返ります。
  747.  
  748.  例
  749.  wait ({30}, {stop}, {>},) 
  750.  
  751.  30秒間,「>」の受信を待ちます。もし,30秒の間,「>」の受信がなか
  752. ったなら,制御文の実行を停止します。
  753.  もし,受信した場合は,次の処理を行います。
  754.  
  755.  2)stop
  756.  
  757.  制御文の実行を終了します。最後に記述された制御文の実行後はこの制御文が
  758. なくても停止します。
  759.  
  760.  3)stopterm
  761.  
  762.  MOPTERMを停止します。
  763.  
  764.  4)case(a, c1,st1, c2,st2, c3,st3,  ...)
  765.  aが,c1と等しい場合は,st1を評価し,実行します。一般にn番目のc
  766. nと等しい場合,stnを評価し,実行します。cnが空である場合,stnは
  767. 必ず実行され,それ以降の比較は行われません。
  768.  
  769.  5)loop(a)
  770.   aを評価し,実行します。もし,結果が,「Yes」なら,再度,aを評価し,実
  771. 行します。これを,aの結果が「Yes」でなくなるまで行います。
  772.  
  773.  6)input(表題) 又は input(表題,{c})
  774.   表題をして表示し,入力行を出します。ユーザが,文字をを入力し,改行を行
  775. うと,その改行までの文字が返ります。
  776.  2番目のパラメターで,{c}が指定された場合は,入力待ち状態で,回線からの
  777. 受信が可能です。RT中の入力等に利用可能です。
  778.  
  779.  7)select(表題,時間,文0  ,項目1,文1  ,項目2,文2,...)
  780.  表題を表示し,その下に,マウスクリックするボタンとして,項目nを表示し
  781. ます。各項目が左クリックされた場合は,対応する文が実行されます。指定され
  782. た時間(秒)内にクリックされない場合,又は,右クリックされた場合は,文0
  783. が実行されます。
  784.  
  785.  8)chat({Yes}/{No})
  786.  オートパイロット実行中の,キーボードからの送信を許可,不許可とするもの
  787. です。許可した形の場合,マニュアルでの動作のバックグランドで,オートパイ
  788. ロットが動作するような形になります。
  789.  
  790.  9)display(任意の文字列)
  791.  オートパイロット処理の処理状況を画面に表示する際に使用します。文字列を
  792. 表示するだけで,特に処理に影響はありません。
  793.  
  794.  10)footnote(テキスト)  又は footnote(テキスト,{b})
  795.   テキストを,画面の最下段に表示する文です。テキストは,半角70文字(全
  796. 角35文字)までの文字列でを指定します。改行は,必要ありません。また,エ
  797. スケープや,コントロールコードは使用できません。また,表示は,オートパイ
  798. ロットの実行中のみです。
  799.  
  800.   例 「動作中」という文字列を表示する。
  801.          footnote({動作中})
  802.  
  803.   2つ目のパラメタで,{b}を指定した場合は,画面の下側に最大12個のボタン
  804. を表示します。このボタンは,waitxで拾うためのアクションになります。この場
  805. 合,テキストは,4文字(全角2文字)単位で区切られて,ボタンの表書きに使わ
  806. れる事になります。1つのボタンが4文字(全角2文字)ですので,12個のボタ
  807. ン全てを使用すると,48文字のテキストになります。
  808.  文字数は,ボタンの数×4文字でなくてはいけません。
  809.  
  810.  11)dispoff({Yes}/{No})
  811.  バックスクロールするディスプレイへの表示を,中止する指定です。一旦,「Yes」
  812. を指定すると,全ての処理で,バックスクロール画面への表示が停止します。「No」
  813. を指定すると,表示を再開します。
  814.  
  815.  12)snd(ファイル名)
  816.   PCMデータの入った,SND形式のファイルを指定して,その内容を発音し
  817. ます。
  818.  
  819.  13)filesel  又は, filesel(ファイルタイプ)
  820.   ファイルセレクターを表示し,ユーザにファイル名を選択してもらいます。応
  821. 答として,ファイル名が返ります。ファイルタイプは,3文字までの大文字の英
  822. 数字で,ファイル名の「.」の後の部分が,ここに指定した物と同じもののみ一覧
  823. 表示します。一覧の絞り込みのためのもので,直接ファイル名を入れた場合のチ
  824. ェックには使用されません。
  825.  
  826.  14)waitx( パ0,パ1,パ2,パ3,パ4,パ5,・・・・・・・)
  827.  
  828.   処理はwait文とほぼ同じです。但し,PFキーが押された場合,又は,マウス
  829. の右ダブルクリックが行われた場合に,タイムオーバーと同じ形式で,終了しま
  830. す。
  831.  その際,xtype文で,どのような処理で終了したかを知る事が可能です。
  832.  PFキーは,通常のキー入力モードには無関係に,押された事のチェックを行
  833. いますので,特に chat({Yes}) のようなモードにしなくて,OKです。
  834.  xtype文で返る値は以下の通りです。
  835.  - xtype
  836.  タイムオーバー
  837.    -2
  838.  ダブルクリックされた時
  839.    0 : バックスクロールの部分
  840.    1~9 : 各々,メモ1~9に対応するメモ画面(必ず,編集中)
  841.    -1 : 上の何れでもない部分でダブルクリックした場合。
  842.  PFキーが押された場合
  843.    101:PF1キー
  844.    102:PF2キー
  845.     ・    ・
  846.     ・    ・
  847.    112:PF12キー
  848.   下にボタンを表示している場合で,そのボタンがマウスで左クリックされた場合
  849.    201:左端のボタンがクリックされた
  850.    202:左から2番目がクリックされた
  851.     ・    ・
  852.     ・    ・
  853.    212:右端のボタンがクリックされた
  854.  
  855.  ダブルクリックにより,終了した場合は,以下の文を使用可能です。
  856.  - xline(a)
  857.   aは数値であり,その数値に従って,以下の内容を返す。
  858.   a  = 0  クリックされた時の,マウス位置の行の内容
  859.     < 0  マウス位置より,さかのぼって,-a行目の内容
  860.        > 0  マウス位置から,a行 ,先の行の内容
  861.   マウス位置が,画面上の行の改行より右側部分にある場合,次の行の頭を指し
  862. ているものとする。メモ画面上の行の場合,メモ画面がクローズされた後は,値
  863. は返せない。
  864.  
  865.  5.6 文字列操作
  866.  
  867.  オペランドで指定した文字列の操作を行う,関数的な処理です。
  868.  
  869.  1)xc({16進数})
  870.   16進数で記述された,コードに対応する文字を返します。1文字は2桁の16
  871. 進数に対応します。
  872.  
  873.  2)im(文字列)
  874.  文字列をそのまま値として返します。「@im( a )」は,「a」と同じ意味になりま
  875. す。
  876.  
  877.  3)tail(a,b,c) 又は tail(a,b)
  878.  aという文字列を,後ろから検索して,bと同じ文字列があれば,それより後
  879. ろを返します。もし,cが指定されていれば,bより後ろで,cという文字列よ
  880. り前の部分,つまり,bとcに挟まれた部分を返します。
  881.   「display(@tail{akkcdeabbc},{a},{c})」は,「bb」を表示します。
  882.  
  883.  4)head(a,b,c) 又は head(a,c)
  884.  aという文字列を,前から検索して,cと同じ文字列があれば,それより前を
  885. 返します。もし,bが指定されていれば,cより前で,bという文字列より後ろ
  886. の部分,つまり,bとcに挟まれた部分を返します。
  887.   「display(@head{akkcdeabbc},{a},{c})」は,「kk」を表示します。
  888.  
  889.  5)body(a,b) 又は body(a,,c) 又は body(a,b,c)
  890.  もし,bが指定されていればaという文字列を,前から検索して,bと同じ文字
  891. 列があれば,それより後を返します。もし,cが指定されていれば,aを後ろから
  892. 検索してcという文字列より前の部分を返します。bとcが指定されていた場合は
  893. bとcに挟まれた部分を返します。
  894.   「display(@body{akkcdeabbc},{a},{c})」は,「kkcdeabb」を表示します。
  895.  
  896.  6)getchar(a,b,c) 又は,getchar(a,b)
  897.  aという文字列の,b文字目より後の部分です。cが指定されていた場合は,
  898. b文字目より後の,c文字を取り出します。bがaの長さより長い場合は,空の
  899. 文字列になります。cが残りの長さより長い場合は,残りの全てになります。
  900.  
  901.  7)getline(a,b,c) 又は getline(a,b)
  902.  aという文字列の,b行目より後で,cがあれば,c行分を返します。
  903.  
  904.  8)nochar(a)
  905.   aの文字数を返します。
  906.  
  907.  9)noline(a)
  908.   aの行数を返します。
  909.  
  910.  
  911.  5.7 状態参照
  912.  
  913.  MOPTERMの処理状態を取り出す,関数的なものです。
  914.  
  915.  1)laststr 又は laststr(a)
  916.  最も最近受信した,a文字の文字列を返します。aが指定されていない場合は,
  917. 64文字分返します。 aの値は,1以上で128以下である必要があります。
  918.  なお,バックスクロール画面への表示を行っていない場合にも,この応答は返
  919. ります。MOPTERMの起動直後で,指定した文字数分だけ受信していない場合は,頭
  920. に半角空白文字を補った,文字列が返ります。
  921.   「%jobno @tail(@laststr,{番号},{のユーザ});」は,最も最近受信した文字
  922. 列の中で「番号」と「のユーザ」のあいだの部分になります。
  923.  
  924.   2)day
  925.  発行した月日を返します。月は,16進数一桁,その後に日付を二桁の十進数
  926. で付けた3桁の形です。
  927.  
  928.  3)linetime
  929.  電話回線の接続時間を秒単位でカウントし,その値を返します。接続前は「0」
  930. を返します。切断後は,切断時の接続時間を返します。最大値は10進数で7桁
  931. ぐらいですが,そこまで使う人は,,,あまり,いないと思います。
  932.  接続とは,モデムが,「CONNECT」を返した時点からで,切断というのはMOPTERM
  933. が,RS-232CのDTR信号線をLowレベルにすることを言っています。
  934.  
  935.  4)linechck
  936.  接続状態か,否かを返す関数です。接続時は,「Yes」を,非接続時は「No」を
  937. 返します。
  938.  接続とは,モデムが,「CONNECT」を返した時点からで,非接続というのは,そ
  939. の後,MOPTERMが,RS-232CのDTR信号線をLowレベルにした後の状態です。
  940.  
  941.  
  942.  5.8 ファイル操作
  943.  
  944.  ファイルの書き込み,読みだし等の操作を行います。
  945.  
  946.  1)write(ファイル名,文字列)
  947.   指定したファイルの最後に,文字列を追加します。
  948.  
  949.  2)read(ファイル名) 又は read(ファイル名,最初の行) 又は
  950.         read(ファイル名,最初の行,行数)
  951.   指定したファイルの中身を返します。最初の行が指定されている場合は,その
  952. 行,以降を返します。行数が指定されている場合は,その行数分だけ返します。
  953.  
  954.   3)getcdir
  955.   カレントディレクトリーのパスを返します。形式は以下のような形です。
  956.   ドライブ名:\再上位のディレクトリー名\次のディレクトリー名\...
  957.                        ...最後のディレクトリー名
  958.  
  959.  4)setcdir(ディレクトリーへのパス)
  960.  カレントディレクトリーを任意のパスに変更します。パスの指定は,getcdirで
  961. 得た形式に準拠します。指定されたパスへの変更に成功した場合は「Yes」,失敗
  962. した場合は「No」を返します。
  963.  
  964.  5)filechk(a)
  965.   aというファイルが存在する場合に「Yes」,存在しない場合に「No」を返します。
  966.  
  967.  6)command(コマンド)
  968.  
  969.  MS-DOSのコマンドとして処理します。処理結果の文字出力は画面に出ま
  970. す。
  971.  
  972.  7)fopen(ファイル名)
  973.   ファイルの読み込みオープン処理。fread,fclose,ftellと組み合わせて使用す
  974. る。オープンに成功すると「Yes」 失敗すると「No」を返す。
  975.  
  976.  8)fread 又は fread(桁位置, 検索文字)
  977.  fopenで,オープンしたファイルの次の一行を返す。パラメタが与えられると,
  978. 次の行を検索して,指定された桁位置に,指定された文字のある,最初の行を返す
  979.  
  980.  9)fclose
  981.   fopenと対にして使用する。ファイルの読み込み処理を終了する。
  982.  
  983.  10)ftell
  984.   最も最近,読み込んだ行の,ファイルの先頭からのバイト数を返す。この値は
  985. 必ず6桁の数値で表され,先行0を消す事はない。
  986.   例
  987. %setline {
  988.   %line2 @fread;
  989.   var item[82];
  990.   item:=@ftell | {  } | @getchar(line,1,3);
  991.   case(@getchar(line2,27,2),
  992.     {へ},{item:=item | @getchar(line2,23,4)},
  993.         ,{item:=item | {    }}
  994.   );
  995.   item:=item | @getchar(line,19,80);
  996.   madd(1,item);
  997. };
  998.  
  999. mclear(1);
  1000. fopen({i:\FTOWNS1\mes15.log});
  1001. loop({
  1002.     %line @fread(4,{/});
  1003.     setline;
  1004.     im(line <> {})
  1005. });
  1006.  
  1007. fclose
  1008.  
  1009.  11)diskrem
  1010.   カレントドライブの,空きエリアの大きさを返します。単位は,バイトです。
  1011. Kバイトでないので,注意して下さい。
  1012.  
  1013.  5.9 メモ操作
  1014.  
  1015.  メモの内容を処理するものです。
  1016.  
  1017.  1)mread(ファイル名[,メモ番号[,開始バイト位置[,読み込みバイト数]]])
  1018.  
  1019.  指定されたファイルの内容をMemoのメモ番号番目に読み込みます。メモ番
  1020. 号は作成済のメモの番号を指定する1~9の数字です。
  1021.  (省略時はメモ番号1)
  1022.  
  1023.  2)mwrite(ファイル名[,メモ番号])
  1024.  
  1025.  指定されたファイルにMemoのメモ番号番目の内容を書き出します。メモ番
  1026. 号は作成済のメモの番号を指定する1~9の数字です。
  1027.  (省略時はメモ番号1)
  1028.  
  1029.  3)mclear[(メモ番号)]
  1030.  
  1031.  Memoのメモ番号番目の内容を削除します。メモ番号は作成済のメモの番号
  1032. を指定する1~9の数字です。
  1033.  (省略時はメモ番号1)
  1034.  
  1035.  4)memo(a) 又は memo(a,最初の行) 又は memo(a,最初の行,行数)
  1036.   a番目のメモの内容を返します。最初の行が指定されている場合は,その行,
  1037. 以降を返します。行数が指定されている場合は,その行数分だけ返します。
  1038.  
  1039.  5)madd(a,text)
  1040.   a番目のメモの後ろに,textの内容を追加します。aは,現在作成済のメモ
  1041. か,作成済のメモ+1のメモで,1~9の範囲の番号です。
  1042.  
  1043.  6)mlast
  1044.   最後に作成されたメモの番号(最大のメモの番号)を返します。メモがまった
  1045. く作成されていない場合は,「0」が返ります。最大は9です。
  1046.  
  1047.   7)mcheck
  1048.  現在,メモ編集中の場合に,編集中のメモの番号が返ります。編集中でない場
  1049. 合は,「0」が返ります。最大は,9です。
  1050.  
  1051.  8)mopen(a) 又は mopen(a,ulx,uly,drx,dry[,type])
  1052.  メモウインドウをオープンします。a番目のメモは,この文の実行前に作成され
  1053. ている必要があります。また,現在編集中のウィンドウがある場合はエラーにな
  1054. ります。(mclose(1)等でクローズする必要があるでしょう。)
  1055.  パラメタが,aのみの場合は,ウインドウの大きさ,及び,場所は,以前,オー
  1056. プンされた時の場所,又は,最初のオープンの場合は,マウスカーソル位置の周
  1057. 辺です。
  1058.  2番目以降のパラメタは,ウィンドウの画面上の位置,及び,大きさを指定す
  1059. るもので,左上の点と,右下の点の座標(x,y)になっています。
  1060.   左上 (ulx,uly)    右下 (drx,dry)
  1061.  x座標は,左から右に0~639の値で表します。
  1062.  y座標は,上から下に21~459の値で表します。
  1063.  また,ウィンドウのサイズは,最低,x方向に80以上,y方向に41以上,
  1064. 必要です。y方向のサイズは,スクロールバーと,上のタイトル部分を含みます
  1065. ので,実際に使用できるのは,(指定した大きさ-21)ドットの分です。
  1066.  1文字半角は,横に8ドット,縦に20ドット必要ですので,最低のウィンド
  1067. ウで,横10文字,縦1行,最大で,横80文字,縦20行(半?)です。横の
  1068. 文字数ははみ出すと,次の行に回り込みますが,縦は,半分だけ表示されます。
  1069. 半分の行は,編集には使えませんが・・(^_^;。
  1070.  
  1071.   例 メモ1を最大の大きさのメモウィンドウでオープンする。
  1072.  
  1073.   mopen(1,0,21,639,459)
  1074.  
  1075.  typeを指定すると,オートパイロットの制御専用の画面を作成することができ
  1076. ます。typeに 「w」を指定すると,オートパイロット以外の制御で,画面を閉じ
  1077. ることができなくなります。また,「r」を指定すると,「w」の制限の他に参照
  1078. のみとなり,手動で変更することができなくなります。
  1079.  アップされたメッセージを見て,コメントを作るという作業をオートパイロッ
  1080. トの制御下でやるとすると,アップされたメッセージを「r」指定で表示しておい
  1081. て,「w」指定の,応答編集画面を出す,,と言ったぐあいに使います。
  1082.  
  1083.  9)mclose(タイプ)
  1084.  編集のメモウィンドウをクローズします。タイプによって,以下の動作を行い
  1085. ます。
  1086.   1 : 編集状態を解除します。メモウィンドウそのものは表示したままです。
  1087.   2 : 編集状態を解除し,表示も消します。その際,下位に重なったメモウィ
  1088.    ンドウが画面上にある場合は,そのメモウィンドウが編集状態になります。
  1089.   3 : 編集状態を解除し,表示も消し,メモとしての存在も消します。メモの
  1090.    番号は,それ以降のものが,一つ,繰り下がります。
  1091.     その際,下位に重なったメモウィンドウが画面上にある場合は,そのメ
  1092.    モウィンドウが編集状態になります。
  1093.  
  1094.  6.著作権
  1095.  
  1096.  本文法の著作権はNIFTYのモップ(PFF00570)にあるものとしま
  1097. す。商用に本文法を使用する場合はご一報ください。フリーソフトウエアとして
  1098. の使用は自由ですが,この文法を使用するソフトウエアの配付には,この著作権
  1099. の記述も併せて配付することを義務とします。また,ユーザの混乱を避けるため
  1100. に,文法については中途半端な類似は避けてください。同じものとする場合は,
  1101. ユーザが同じ記述の制御文ファイルを共有できる程度に互換性のあるものにして
  1102. ください。
  1103.  もっとも,厳しい対処をさせて戴くケースは,少し違うという文法を作成する
  1104. 場合です。
  1105.  何れの場合も,メールいただければ,対応いたします。
  1106.  
  1107.                        モップ(PFF00570)
  1108.  
  1109.